package com.iweb;

import java.util.ArrayList;
import java.util.Iterator;

public class Demo2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("a");
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("b");
        list.add("c");
        list.add("c");
        list.add("c");
        //removeData(list);
        removeDataB(list);
    }

    private static void removeDataB(ArrayList<String> list) {
        //移除元素b 移除一个元素之后 size就变了 但是下标在往后走
//        for (int i = 0; i < list.size(); i++) {
//            if (list.get(i).equals("b")){
//                list.remove(i);
//                i--;
//            }
//        }
        //ConcurrentModificationException
//        for (String s:list){
//            if (s.equals("b")){
//                list.remove(s);
//            }
//        }
        //对于集合中 元素的移除操作 应该交给迭代器来实现
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String data = iterator.next();
            if (data.equals("b")){
                //用迭代器的移除方法 而不能用集合的移除方法
                iterator.remove();
            }
        }

        for (String s:list){
            System.out.println(s);
        }
    }

    private static void removeData(ArrayList<String> list) {
        //构建一个新的集合 用来存储不重复的元素
        ArrayList<String> newList = new ArrayList<>();
        //遍历原来的集合 将不重复的元素添加到新的集合里面
        for (int i = 0; i < list.size(); i++) {
            if (!newList.contains(list.get(i))){
                newList.add(list.get(i));
            }
        }
        for (String s:newList){
            System.out.println(s);
        }
    }
}

